feat(integrations): add OMP client support - #1109
Conversation
📝 WalkthroughWalkthroughThe change adds OMP as a supported file integration and export client. It adds profile-aware paths, YAML serialization, loopback credentials, GUI routing, localized labels, API coverage, tests, and documentation updates. ChangesOMP integration
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Review readiness checklist
2/4 boxes ticked. This PR stays in draft until every box above is ticked. |
ca9183d to
6860b6c
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
docs-site/src/content/docs/ja/reference/cli/agents.md (1)
136-148: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winUpdate the localized CLI output contract.
Both pages list seven clients in the command heading but still restrict the
--clientflag toopencode|pi. Both pages also state that--jsonproduces JSON, although OMP, Hermes, and Gajae produce YAML, OpenClaw produces JSON5, and Kimi produces TOML.
docs-site/src/content/docs/ja/reference/cli/agents.md#L136-L148: List all seven client IDs. Replace JSON-only output wording with generated configuration bytes.docs-site/src/content/docs/ko/reference/cli/agents.md#L142-L154: List all seven client IDs. Replace JSON-only output wording with generated configuration bytes.As per path instructions, translated locale pages must not contradict the English source.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-site/src/content/docs/ja/reference/cli/agents.md` around lines 136 - 148, Update the CLI documentation in docs-site/src/content/docs/ja/reference/cli/agents.md lines 136-148 and docs-site/src/content/docs/ko/reference/cli/agents.md lines 142-154: change the --client option to list all seven supported client IDs, and revise --json wording to describe generated configuration bytes rather than JSON-only output, matching the English source and accounting for each client’s format.Source: Path instructions
docs-site/src/content/docs/ru/reference/cli/agents.md (1)
155-193: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winThe localized CLI references retain the same client-list and output-format drift.
Both pages add OMP to the heading and examples but leave the client option and destination tables incomplete. Both also describe
--jsonas JSON-only even though OMP emits YAML.
docs-site/src/content/docs/ru/reference/cli/agents.md#L155-L193: Update Line 167, add the four omitted client rows, and describe--jsonas native-format output.docs-site/src/content/docs/zh-cn/reference/cli/agents.md#L129-L155: Update Line 137, add the four omitted client rows, and describe--jsonas native-format output.As per path instructions, localized documentation must stay consistent with actual CLI and API behavior.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-site/src/content/docs/ru/reference/cli/agents.md` around lines 155 - 193, Update docs-site/src/content/docs/ru/reference/cli/agents.md lines 155-193 and docs-site/src/content/docs/zh-cn/reference/cli/agents.md lines 129-155 consistently: revise the client option description to include all supported clients, add the four missing client rows to each destination table, and describe --json as native-format output so OMP’s YAML is covered rather than claiming JSON-only output.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs-site/src/content/docs/guides/integrations.md`:
- Around line 19-22: Update docs-site/src/content/docs/guides/integrations.md
lines 19-22 to include PI_PROFILE and document ompAgentDir() precedence:
OMP_PROFILE overrides PI_PROFILE; with an active profile, PI_CODING_AGENT_DIR is
ignored and PI_CONFIG_DIR supplies the profile root; without a profile,
PI_CODING_AGENT_DIR takes precedence. Apply the same precedence rule in
docs-site/src/content/docs/reference/cli/agents.md line 180, replacing the flat
variable list.
In `@tests/management-client-config-route.test.ts`:
- Around line 162-176: Extend the OMP test around clientConfigApi and
PiGeneratedConfig to assert the complete routed model catalog: a/m1, a/m2, and
b/no-context. Also verify the exported models preserve their capability and
reasoning metadata, including the expected modelContextWindows values, while
retaining the existing provider and API key assertions.
- Around line 162-176: Update the OMP test around clientConfigApi and the
body.config assertions to verify that neither body.text nor the serialized
body.config contains REAL_LOOKING_KEY. Keep the existing provider model and
placeholder API-key assertions unchanged.
---
Outside diff comments:
In `@docs-site/src/content/docs/ja/reference/cli/agents.md`:
- Around line 136-148: Update the CLI documentation in
docs-site/src/content/docs/ja/reference/cli/agents.md lines 136-148 and
docs-site/src/content/docs/ko/reference/cli/agents.md lines 142-154: change the
--client option to list all seven supported client IDs, and revise --json
wording to describe generated configuration bytes rather than JSON-only output,
matching the English source and accounting for each client’s format.
In `@docs-site/src/content/docs/ru/reference/cli/agents.md`:
- Around line 155-193: Update
docs-site/src/content/docs/ru/reference/cli/agents.md lines 155-193 and
docs-site/src/content/docs/zh-cn/reference/cli/agents.md lines 129-155
consistently: revise the client option description to include all supported
clients, add the four missing client rows to each destination table, and
describe --json as native-format output so OMP’s YAML is covered rather than
claiming JSON-only output.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: cfc8af1a-b446-49d9-b51a-426e76c08cf9
⛔ Files ignored due to path filters (1)
devlog/_plan/260806_omp_integration/evidence/omp-dashboard.pngis excluded by!**/*.png
📒 Files selected for processing (35)
docs-site/src/content/docs/guides/integrations.mddocs-site/src/content/docs/ja/reference/cli/agents.mddocs-site/src/content/docs/ja/reference/management-api.mddocs-site/src/content/docs/ko/reference/cli/agents.mddocs-site/src/content/docs/ko/reference/management-api.mddocs-site/src/content/docs/reference/cli/agents.mddocs-site/src/content/docs/reference/management-api.mddocs-site/src/content/docs/ru/reference/cli/agents.mddocs-site/src/content/docs/ru/reference/management-api.mddocs-site/src/content/docs/zh-cn/reference/cli/agents.mddocs-site/src/content/docs/zh-cn/reference/management-api.mdgui/src/app-routing.tsgui/src/components/apikeys-workspace/client-config-clients.tsgui/src/i18n/de.tsgui/src/i18n/en.tsgui/src/i18n/ja.tsgui/src/i18n/ko.tsgui/src/i18n/ru.tsgui/src/i18n/zh.tsgui/src/pages/Integrations.tsxgui/src/pages/integrations/FileIntegrationPage.tsxgui/src/pages/integrations/integration-api.tsgui/src/pages/integrations/overview-clients.tsgui/tests/client-config-panel.test.tsxgui/tests/integrations-overview-rows.test.tssrc/cli/export-command.tssrc/cli/help.tssrc/clients/config-export.tssrc/integrations/registry.tstests/cli-export-command.test.tstests/client-config-export-new-clients.test.tstests/client-config-export.test.tstests/integrations-invariants.test.tstests/integrations-state.test.tstests/management-client-config-route.test.ts
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6860b6c4ac
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs-site/src/content/docs/ja/reference/cli/agents.md`:
- Line 154: Synchronize the OMP destination metadata rows in
docs-site/src/content/docs/ja/reference/cli/agents.md:154-154,
docs-site/src/content/docs/ko/reference/cli/agents.md:160-160,
docs-site/src/content/docs/ru/reference/cli/agents.md:187-187, and
docs-site/src/content/docs/zh-cn/reference/cli/agents.md:155-155: mark
~/.omp/agent/models.yml as the default path, document OMP_PROFILE/PI_PROFILE
precedence, and replace the generic placeholder with the literal
opencodex-loopback value in each localized table.
- Around line 141-144: Update the localized export-output descriptions to
reflect that non-JSON output is generated client configuration or the selected
native format, rather than always JSON. In
docs-site/src/content/docs/ja/reference/cli/agents.md lines 141-144, revise the
adjacent Line 148 wording; apply the equivalent correction in
docs-site/src/content/docs/ko/reference/cli/agents.md lines 147-150 for Line
154, docs-site/src/content/docs/ru/reference/cli/agents.md lines 172-175 for
Lines 179-181, and docs-site/src/content/docs/zh-cn/reference/cli/agents.md
lines 142-145 for Line 149.
In `@tests/client-config-export.test.ts`:
- Around line 479-488: Make the test around EXPORT_CLIENTS.omp.destination
deterministic by isolating homedir() or mocking the filesystem check used by
ompModelsConfigPath, so the real test account cannot affect the selected
filename. Preserve separate assertions covering both canonical models.yml and
legacy models.yaml resolution.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: cc38f932-0454-4ec6-a12e-105f1d85597c
📒 Files selected for processing (10)
docs-site/src/content/docs/guides/integrations.mddocs-site/src/content/docs/ja/reference/cli/agents.mddocs-site/src/content/docs/ko/reference/cli/agents.mddocs-site/src/content/docs/reference/cli/agents.mddocs-site/src/content/docs/ru/reference/cli/agents.mddocs-site/src/content/docs/zh-cn/reference/cli/agents.mdsrc/cli/export-command.tssrc/cli/help.tssrc/clients/config-export.tstests/client-config-export.test.ts
e35bc9b to
1370270
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1370270476
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| **Pi, OMP, Kimi Code and Gajae Code only work against a loopback bind.** None of their config | ||
| schemas has a place for the `x-opencodex-api-key` header that a non-loopback bind |
There was a problem hiding this comment.
Correct the claim that OMP cannot carry admission headers
When a user wants to configure OMP for a non-loopback proxy manually, this paragraph incorrectly says OMP's schema has nowhere to put x-opencodex-api-key, contradicting lines 22–23, which now acknowledge provider-level header support. Fresh evidence in the current head is that the earlier limitation was narrowed to the generated integration, but this older blanket statement remains; split OMP from the schema-limited clients and state only that opencodex's initial generated OMP integration defers remote credential wiring.
AGENTS.md reference: docs-site/AGENTS.md:L7-L10
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs-site/src/content/docs/guides/integrations.md (1)
83-88: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winDo not state that OMP has no header slot.
OMP supports provider-level headers. This integration still does not emit remote
x-opencodex-api-keywiring, so it remains loopback-only. Split OMP from clients whose schemas have no header field, and document the deferred remote-header limitation instead.As per path instructions, OMP documentation must distinguish provider-adapter header behavior from client export and preserve the loopback-only limitation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-site/src/content/docs/guides/integrations.md` around lines 83 - 88, The integration guidance should distinguish OMP from Pi, Kimi Code, and Gajae Code: do not claim OMP lacks a header slot. Update the OMP-specific wording to acknowledge provider-level headers while stating that this integration does not emit remote x-opencodex-api-key wiring, so OMP remains loopback-only; keep the no-header-schema explanation only for the other clients.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs-site/src/content/docs/ja/reference/cli/agents.md`:
- Around line 128-130: Update the localized CLI introductions to describe the
actual native serialization contract: the selected client’s native format
contains a credential reference or the opencodex-loopback placeholder, as
applicable, rather than always an environment reference. Apply this wording to
docs-site/src/content/docs/ja/reference/cli/agents.md lines 128-130,
docs-site/src/content/docs/ko/reference/cli/agents.md lines 134-136, and
docs-site/src/content/docs/zh-cn/reference/cli/agents.md lines 129-131; update
docs-site/src/content/docs/ru/reference/cli/agents.md line 155 to mention native
format and loopback placeholders.
In `@src/clients/config-export.ts`:
- Around line 1006-1019: Update the filename value in EXPORT_CLIENTS.omp to
"models.yml" so downloaded OMP configurations match the canonical path selected
by ompModelsConfigPath. Keep the existing destination and loopback-only behavior
unchanged.
---
Outside diff comments:
In `@docs-site/src/content/docs/guides/integrations.md`:
- Around line 83-88: The integration guidance should distinguish OMP from Pi,
Kimi Code, and Gajae Code: do not claim OMP lacks a header slot. Update the
OMP-specific wording to acknowledge provider-level headers while stating that
this integration does not emit remote x-opencodex-api-key wiring, so OMP remains
loopback-only; keep the no-header-schema explanation only for the other clients.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 6b424375-3b85-44de-9851-84c63c7452d4
📒 Files selected for processing (16)
docs-site/src/content/docs/guides/integrations.mddocs-site/src/content/docs/ja/reference/cli/agents.mddocs-site/src/content/docs/ko/reference/cli/agents.mddocs-site/src/content/docs/reference/cli/agents.mddocs-site/src/content/docs/ru/reference/cli/agents.mddocs-site/src/content/docs/zh-cn/reference/cli/agents.mdgui/src/app-routing.tsgui/src/i18n/de.tsgui/src/i18n/en.tsgui/src/i18n/ja.tsgui/src/i18n/ko.tsgui/src/i18n/ru.tsgui/src/i18n/zh.tssrc/clients/config-export.tstests/client-config-export.test.tstests/management-client-config-route.test.ts
| ### `ocx export --client <opencode|pi|omp|hermes|openclaw|kimi|gajae>` | ||
|
|
||
| 実行中のプロキシに接続されているクライアント設定を出力します。 opencode と [円周率](/guides/pi/) は環境変数ではなく独自の JSON 設定からプロバイダーを読み取るため、このコマンドは `opencodex` プロバイダー ブロック (ベース URL、モデル リスト、クライアントの環境参照) をシリアル化し、そのファイルにマージできるようにします。 |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the actual credential and serialization contract in every localized introduction.
The expanded client lists include OMP, but each localized introduction describes the serialized value as an environment reference. The CLI emits the selected client’s native format, and OMP and Pi use the literal opencodex-loopback placeholder instead of an environment reference.
docs-site/src/content/docs/ja/reference/cli/agents.md#L128-L130: Replace the generic environment-reference wording with “credential reference or loopback placeholder” and mention native format.docs-site/src/content/docs/ko/reference/cli/agents.md#L134-L136: Replace the generic environment-reference wording with “credential reference or loopback placeholder” and mention native format.docs-site/src/content/docs/ru/reference/cli/agents.md#L155-L155: Update the adjacent introduction to cover native format and loopback placeholders.docs-site/src/content/docs/zh-cn/reference/cli/agents.md#L129-L131: Replace the generic environment-reference wording with “credential reference or loopback placeholder” and mention native format.
As per path instructions, localized documentation must stay synchronized with actual CLI behavior.
📍 Affects 4 files
docs-site/src/content/docs/ja/reference/cli/agents.md#L128-L130(this comment)docs-site/src/content/docs/ko/reference/cli/agents.md#L134-L136docs-site/src/content/docs/ru/reference/cli/agents.md#L155-L155docs-site/src/content/docs/zh-cn/reference/cli/agents.md#L129-L131
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs-site/src/content/docs/ja/reference/cli/agents.md` around lines 128 -
130, Update the localized CLI introductions to describe the actual native
serialization contract: the selected client’s native format contains a
credential reference or the opencodex-loopback placeholder, as applicable,
rather than always an environment reference. Apply this wording to
docs-site/src/content/docs/ja/reference/cli/agents.md lines 128-130,
docs-site/src/content/docs/ko/reference/cli/agents.md lines 134-136, and
docs-site/src/content/docs/zh-cn/reference/cli/agents.md lines 129-131; update
docs-site/src/content/docs/ru/reference/cli/agents.md line 155 to mention native
format and loopback placeholders.
Source: Path instructions
| omp: { | ||
| id: "omp", | ||
| filename: "omp-models.yaml", | ||
| destination: env => ompModelsConfigPath(env), | ||
| apiKeyEnv: "", | ||
| exportHint: "OMP reads a non-secret placeholder from models.yml; loopback needs no key.", | ||
| build: buildPiClientConfig, | ||
| format: "yaml", | ||
| summarize: summarizePi, | ||
| buildContribution: buildOmpContribution, | ||
| // OMP supports provider-level headers, but remote credential wiring is | ||
| // intentionally deferred from this initial loopback-only integration. | ||
| loopbackOnly: true, | ||
| }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check whether other export clients keep filename in sync with their destination basename,
# and whether an invariant test enforces this for all clients including omp.
set -euo pipefail
echo "--- EXPORT_CLIENTS entries (filename/destination pairs) ---"
rg -n -A6 '^\s*(opencode|pi|hermes|openclaw|kimi|gajae|omp):\s*\{' src/clients/config-export.ts
echo "--- Invariant test coverage ---"
fd -a 'integrations-invariants.test.ts' | xargs -r rg -n -C5 'filename|destination'Repository: lidge-jun/opencodex
Length of output: 2324
🏁 Script executed:
#!/bin/bash
# Inspect the relevant config exports paths and the ExportClientSpec interface around filename/destination.
set -euo pipefail
echo "--- config-export outline candidates ---"
fd -a 'config-export.ts|integrations-invariants.test.ts' .
echo "--- src/clients/config-export.ts relevant definitions ---"
rg -n -A10 -B10 'function ompModelsConfigPath|const ompModelsConfigPath|export type ExportClientSpec|filename:' src/clients/config-export.ts
echo "--- destination path implementations ---"
rg -n -A12 'function (opencodeGlobalConfigPath|piGlobalConfigPath|ompModelsConfigPath|hermesConfigPath|openclawConfigPath|kimiConfigPath|gajaeConfigPath)|const (opencodeGlobalConfigPath|piGlobalConfigPath|ompModelsConfigPath|hermesConfigPath|openclawConfigPath|kimiConfigPath|gajaeConfigPath)' src/clients/config-export.ts
echo "--- test files mentioning exports/clients/filenames ---"
git ls-files | rg 'test|spec|integration|config|client' | sed -n '1,160p'
echo "--- focused invariant search ---"
rg -n -C4 'ExportClientSpec|filename|destination|matched|invariant|download filename|matches the destination' tests src || trueRepository: lidge-jun/opencodex
Length of output: 50376
🏁 Script executed:
#!/bin/bash
# Read only the specific relevant file regions with limited line ranges.
set -euo pipefail
echo "--- config-export.ts OMP/client blocks ---"
sed -n '880,1085p' src/clients/config-export.ts
echo "--- config-export.ts path definitions ---"
rg -n -A9 -B2 'function (opencodeGlobalConfigPath|piGlobalConfigPath|ompModelsConfigPath|hermesConfigPath|openclawConfigPath|kimiConfigPath|gajaeConfigPath)|const (opencodeGlobalConfigPath|piGlobalConfigPath|ompModelsConfigPath|hermesConfigPath|openclawConfigPath|kimiConfigPath|gajaeConfigPath)' src/clients/config-export.ts || true
echo "--- ExportClientSpec/interface mentions in config-export.ts only ---"
rg -n -A8 -B6 'interface ExportClientSpec|type ExportClientSpec|filename:' src/clients/config-export.ts | sed -n '1,220p' || true
echo "--- export workflow references to client.filename / client.destination ---"
rg -n 'ClientSpec|filename|destination|download|exportClient|exportClients|EXPORT_CLIENTS' src tests --glob '!data/**' | sed -n '1,260p' || true
echo "--- invariant test excerpts mentioning filename/destination ---"
if [ -f tests/integrations-invariants.test.ts ]; then
rg -n -C6 'filename|destination|integrations-invariant|export' tests/integrations-invariants.test.ts || true
else
echo "tests/integrations-invariants.test.ts not found"
fiRepository: lidge-jun/opencodex
Length of output: 48109
Align the OMP download filename with its canonical destination.
EXPORT_CLIENTS.omp.filename is "omp-models.yaml" at [src/clients/config-export.ts:1008], but ompModelsConfigPath() chooses [src/clients/config-export.ts:211-216] models.yml when no legacy models.yaml exists. The API response uses spec.filename as the downloaded file name, so users get omp-models.yaml instead of the file OMP reads by default. Rename the filename to the canonical destination, e.g. "models.yml".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/clients/config-export.ts` around lines 1006 - 1019, Update the filename
value in EXPORT_CLIENTS.omp to "models.yml" so downloaded OMP configurations
match the canonical path selected by ompModelsConfigPath. Keep the existing
destination and loopback-only behavior unchanged.
Summary
~/.omp/agent/models.ymlopencodex-loopbackplaceholderDependency
The prerequisite Pi visibility fix has landed on
devvia #1151. This branch is now rebased onto currentdev; the inherited #1085 commits and the broader export-policy changes that were not part of OMP have been removed.Overlap
#1109 was opened first and intentionally remained draft while the Pi prerequisite was unresolved. #1140 now overlaps the same OMP integration. This update keeps #1109 focused on its original OMP contract so the maintainers can review the implementations without the former stacked diff.
Security review
This adds a credential destination and requires explicit maintainer security review. No user or provider secret is serialized: OMP receives the non-secret
opencodex-loopbackplaceholder, and integration writes remain restricted to loopback proxy binds. Upstream provider credentials stay in opencodex's own configuration.Verification
Verified on head
13702704rebased ontodevat3e60b1d9:bun run typecheckbun run test— 9,660 pass, 8 skip, 1 unrelated timing-sensitive failure innative-profile-drain-server.test.ts; the complete three-test file passes when rerun alonebun run privacy:scancd gui && bun test tests— 670 pass, 0 failbun run lint:guicd gui && bun run lint:i18nbun run build:guicd docs-site && bun run buildomp models opencodex --jsonrecognized routed GPT, Claude, and Grok modelsScreenshot
The GUI exposes OMP as its own integration tab and reports the generated
models.ymldestination and restart guidance.Checklist
Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:
All CI tests are green on my local testing.
I pushed my PR to the latest dev commit.
I resolved all correct Codex and CodeRabbit findings.
My PR is ready for review.
Summary by CodeRabbit